1. Field of the Invention
This invention is related to digital systems and, more particularly, to buses within digital systems.
2. Description of the Related Art
A bus is frequently used in digital systems to interconnect a variety of devices included in the digital system. Generally, one or more devices are connected to the bus, and use the bus to communicate with other devices connected to the bus. As used herein, the term “agent” refers to a device which is capable of communicating on the bus. The agent may be a requesting agent if the agent is capable of initiating transactions on the bus and may be a responding agent if the agent is capable of responding to a transaction initiated by a requesting agent. A given agent may be capable of being both a requesting agent and a responding agent. Additionally, a “transaction” is a communication on the bus. The transaction may include an address transfer and optionally a data transfer. Transactions may be read transactions (transfers of data from the responding agent to the requesting agent) and write transactions (transfers of data from the requesting agent to the responding agent). Transactions may further include various coherency commands which may or may not involve a transfer of data.
The bus is a shared resource among the agents, and thus may affect the performance of the agents to the extent that the bus may limit the amount of communication by each agent and the latency of that communication. Generally, a bus may be characterized by latency and bandwidth. The latency may be affected by the amount of time used to arbitrate for the bus and to perform a transaction on the bus. The bandwidth may be affected by the amount of information (e.g. bits or bytes) that may be transmitted per cycle, as well as the amount of time used to perform the transfer. Both latency and bandwidth may be affected by the physical constraints of the bus and the protocol employed by the bus.
For example, many bus protocols require two clock cycles for arbitration: the transmission of the requests for the bus during the first clock cycle and the determination of the grant (and transmittal of the grant, in a central arbitration scheme) during the second clock cycle. The transaction may be initiated by the agent receiving the grant during the third clock cycle. The clock cycles may each be a period of a clock signal associated with the bus. Similarly, most bus protocols are limited in the number of bytes of data which may be transferred per clock cycle (e.g. 8 bytes is typical). Accordingly, transferring a cache block of data (which tends to dominate the transfers performed in modem digital systems) requires multiple clock cycles (e.g. 4 clock cycles for a 32 byte cache block on an 8 byte bus).